package com.toilet.easyvideo.service;

import com.toilet.easyvideo.domain.UploadFile;
import com.toilet.easyvideo.response.BasePageResponse;
import com.toilet.easyvideo.response.DownLoadFileResponse;
import com.toilet.easyvideo.response.FileResponse;

import java.io.BufferedInputStream;
import java.util.List;

public interface FileService {
    Boolean selectFileByMd5(String md5);

    List<Long> selectChunkListByMd5(String md5);

    Integer saveChunk(byte[] fileContent, String md5, Long chunkNumber, Long chunkSize, String resultFileName, Long userId);

    /**
     * 添加文件
     *
     * @param fileName 文件名
     * @param md5      文件md5
     * @param fileSize 文件大小
     * @param userId   用户id
     * @return
     */
    Integer addFile(String fileName, String md5, Long fileSize, Long userId);

    void deleteChunkByMd5(String md5, Long userId);

    /**
     * 分页查询文件列表
     *
     * @param pageSize    分页size
     * @param currentPage 当前页
     * @param userId      用户id
     * @return
     */
    BasePageResponse<FileResponse> fileList(Long pageSize, Long currentPage, Long userId);

    /**
     * 游标查询文件块
     *
     * @param fileId      文件id
     * @param currentSize 当前游标位置
     * @param chunkSize   文件块大小
     * @return
     */
    DownLoadFileResponse selectFileById(Long fileId, Long currentSize, Long chunkSize);

    /**
     * 删除文件
     *
     * @param fileId 文件id
     * @param userId 用户id
     * @return
     */
    Boolean deleteFileById(Long fileId, Long userId);
}
